package com.feinno.urcs.group.api;

/**
 * @author Li.Hongbo <lihongbo@feinno.com>
 */

import com.feinno.urcs.group.entity.GroupFileInfo;
import com.feinno.urcs.group.entity.GroupInfo;
import com.feinno.urcs.group.interop.entity.FetionFileMessageArgs;
import com.feinno.urcs.group.interop.entity.FetionTextMessageArgs;
import com.feinno.urcs.group.log.MessageContentType;
import com.feinno.urcs.group.log.MessageDirection;
import com.feinno.urcs.group.pctask.task.AndPcGroupMsgArgs;
import com.feinno.urcs.types.MobileNo;
import org.helium.framework.annotations.ServiceInterface;

import java.util.Date;

@ServiceInterface(id = "group:GroupMessageLogService")
public interface GroupMessageLogService {

	public void textMessageUpstreamLog(String messageId, MobileNo sender, GroupInfo groupInfo, String clientType, MessageDirection messageDirection, MessageContentType contentType, String messageContent, Date messageDateTime);

	public void fileMessageUpstreamLog(String messageId, MobileNo sender, GroupInfo groupInfo, String clientType, MessageDirection messageDirection, GroupFileInfo groupFileInfo, Date messageDateTime);

	public void fileMessageUpstreamLogBeforeDownLoad(String messageId, MobileNo sender, GroupInfo groupInfo, String clientType, MessageDirection messageDirection, GroupFileInfo groupFileInfo, Date messageDateTime);


	public void textMessageDownstreamLog(String messageId, MobileNo sender, String receiverUri, String receiverSite, String groupUri, String clientType, MessageDirection messageDirection, MessageContentType contentType, String messageContent, Date messageDateTime, String clientIP, int statusCode, String reason);

	public void textMessageDownstreamLogOffline(String messageId, MobileNo sender, String receiverUri, String receiverSite, String groupUri, String clientType, MessageDirection messageDirection, MessageContentType contentType, String messageContent, Date messageDateTime, String clientIP, int statusCode, String reason);

	public void fileMessageDownstreamLog(String messageId, MobileNo sender, String receiverUri, String receiverSite, String groupUri, String clientType, MessageDirection messageDirection, GroupFileInfo groupFileInfo, Date messageDateTime, String accessAddress, String clientIP, int statusCode, String reason);


	public void andPcMessageDownstreamLog(AndPcGroupMsgArgs args, int statusCode, String reason, Date messageDateTime);

	public void fetionFileMessageDownstreamLog(FetionFileMessageArgs args, int statusCode, String reason, Date messageDateTime);

	public void fetionTextMessageDownstreamLog(FetionTextMessageArgs args, int statusCode, String reason, Date messageDateTime);
}
